{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "tf.logging.set_verbosity(tf.logging.INFO)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From <ipython-input-2-b0ffac263758>:1: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "WARNING:tensorflow:From C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please write your own downloading logic.\n",
      "WARNING:tensorflow:From C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting ./train-images-idx3-ubyte.gz\n",
      "WARNING:tensorflow:From C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:267: extract_labels (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting ./train-labels-idx1-ubyte.gz\n",
      "Extracting ./t10k-images-idx3-ubyte.gz\n",
      "Extracting ./t10k-labels-idx1-ubyte.gz\n",
      "WARNING:tensorflow:From C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "(55000, 784)\n",
      "(55000,)\n",
      "(5000, 784)\n",
      "(5000,)\n",
      "(10000, 784)\n",
      "(10000,)\n"
     ]
    }
   ],
   "source": [
    "mnist = input_data.read_data_sets(\"./\")\n",
    "\n",
    "print(mnist.train.images.shape)\n",
    "print(mnist.train.labels.shape)\n",
    "\n",
    "print(mnist.validation.images.shape)\n",
    "print(mnist.validation.labels.shape)\n",
    "\n",
    "print(mnist.test.images.shape)\n",
    "print(mnist.test.labels.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,8))\n",
    "\n",
    "for idx in range(16):\n",
    "    plt.subplot(4,4, idx+1)\n",
    "    plt.axis('off')\n",
    "    plt.title('[{}]'.format(mnist.train.labels[idx]))\n",
    "    plt.imshow(mnist.train.images[idx].reshape((28,28)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\framework\\op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Colocations handled automatically by placer.\n"
     ]
    }
   ],
   "source": [
    "x = tf.placeholder(\"float\", [None, 784])\n",
    "y = tf.placeholder(\"int64\", [None])\n",
    "learning_rate = tf.placeholder(\"float\")\n",
    "\n",
    "def initialize(shape, stddev=0.1):\n",
    "  return tf.truncated_normal(shape, stddev=0.1)\n",
    "\n",
    "L1_units_count = 100\n",
    "\n",
    "W_1 = tf.Variable(initialize([784, L1_units_count]))\n",
    "b_1 = tf.Variable(initialize([L1_units_count]))\n",
    "logits_1 = tf.matmul(x, W_1) + b_1\n",
    "output_1 = tf.nn.relu(logits_1)\n",
    "\n",
    "L2_units_count = 10 \n",
    "W_2 = tf.Variable(initialize([L1_units_count, L2_units_count]))\n",
    "b_2 = tf.Variable(initialize([L2_units_count]))\n",
    "logits_2 = tf.matmul(output_1, W_2) + b_2  \n",
    "\n",
    "logits = logits_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "cross_entropy_loss = tf.reduce_mean(\n",
    "    tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y))\n",
    "\n",
    "optimizer = tf.train.GradientDescentOptimizer(\n",
    "    learning_rate=learning_rate).minimize(cross_entropy_loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = tf.nn.softmax(logits)\n",
    "correct_pred = tf.equal(tf.argmax(pred, 1), y)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 32\n",
    "trainig_step = 1000\n",
    "\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "after 100 training steps, the loss is 0.443349, the validation accuracy is 0.8958\n",
      "after 200 training steps, the loss is 0.324017, the validation accuracy is 0.8944\n",
      "after 300 training steps, the loss is 0.275065, the validation accuracy is 0.9106\n",
      "after 400 training steps, the loss is 0.2748, the validation accuracy is 0.9036\n",
      "after 500 training steps, the loss is 0.0958664, the validation accuracy is 0.9268\n",
      "after 600 training steps, the loss is 0.228674, the validation accuracy is 0.9426\n",
      "WARNING:tensorflow:From C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\training\\saver.py:966: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use standard file APIs to delete files with this prefix.\n",
      "after 700 training steps, the loss is 0.0835233, the validation accuracy is 0.9496\n",
      "after 800 training steps, the loss is 0.264359, the validation accuracy is 0.9378\n",
      "after 900 training steps, the loss is 0.0336943, the validation accuracy is 0.9496\n",
      "the training is finish!\n",
      "the test accuarcy is: 0.9465\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "\n",
    "    #定义验证集与测试集\n",
    "    validate_data = {\n",
    "        x: mnist.validation.images,\n",
    "        y: mnist.validation.labels,\n",
    "    }\n",
    "    test_data = {x: mnist.test.images, y: mnist.test.labels}\n",
    "\n",
    "    for i in range(trainig_step):\n",
    "        xs, ys = mnist.train.next_batch(batch_size)\n",
    "        _, loss = sess.run(\n",
    "            [optimizer, cross_entropy_loss],\n",
    "            feed_dict={\n",
    "                x: xs,\n",
    "                y: ys,\n",
    "                learning_rate: 0.3\n",
    "            })\n",
    "\n",
    "        #每100次训练打印一次损失值与验证准确率\n",
    "        if i > 0 and i % 100 == 0:\n",
    "            validate_accuracy = sess.run(accuracy, feed_dict=validate_data)\n",
    "            print(\n",
    "                \"after %d training steps, the loss is %g, the validation accuracy is %g\"\n",
    "                % (i, loss, validate_accuracy))\n",
    "            saver.save(sess, './model.ckpt', global_step=i)\n",
    "\n",
    "    print(\"the training is finish!\")\n",
    "    #最终的测试准确率\n",
    "    acc = sess.run(accuracy, feed_dict=test_data)\n",
    "    print(\"the test accuarcy is:\", acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\training\\saver.py:1266: checkpoint_exists (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use standard file APIs to check for files with this prefix.\n",
      "INFO:tensorflow:Restoring parameters from ./model.ckpt-900\n",
      "0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    ckpt = tf.train.get_checkpoint_state('./')\n",
    "    if ckpt and ckpt.model_checkpoint_path:\n",
    "        saver.restore(sess, ckpt.model_checkpoint_path)\n",
    "        final_pred, acc = sess.run(\n",
    "            [pred, accuracy],\n",
    "            feed_dict={\n",
    "                x: mnist.test.images[:16],\n",
    "                y: mnist.test.labels[:16]\n",
    "            })\n",
    "        orders = np.argsort(final_pred)\n",
    "        plt.figure(figsize=(8, 8))\n",
    "        print(acc)\n",
    "        for idx in range(16):\n",
    "            order = orders[idx, :][-1]\n",
    "            prob = final_pred[idx, :][order]\n",
    "            plt.subplot(4, 4, idx + 1)\n",
    "            plt.axis('off')\n",
    "            plt.title('{}: [{}]-[{:.1f}%]'.format(mnist.test.labels[idx],\n",
    "                                                  order, prob * 100))\n",
    "            plt.imshow(mnist.test.images[idx].reshape((28, 28)))\n",
    "\n",
    "    else:\n",
    "        pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
